/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 */

#ifndef __TSIN_LIBRARY_BULLETGENERATIONEVENT_HPP__
#define __TSIN_LIBRARY_BULLETGENERATIONEVENT_HPP__

#include <tsin/library/common.hpp>
#include <tsin/library/BulletEvent.hpp>

namespace tsin {

        class BulletGenerator;

        class LIBRARY_DLLEXPORT BulletGenerationEvent : public BulletEvent {
        public:
                BulletGenerationEvent(bool d = false);
                virtual ~BulletGenerationEvent();

                void init(BulletGenerator *generator);
                virtual void reinit();
                virtual DynamicEvent postTick(void *data, void *priv_data);

                virtual DynamicObject *copy();
                virtual bool trigger(BulletRuntime &bullet, void *data);
                virtual BulletEvent *handle(BulletRuntime &bullet, void *data);

        private:
                BulletGenerator *generator;
        };

}

#endif /* __TSIN_LIBRARY_BULLETGENERATIONEVENT_HPP__ */
